/*
 * The MIT License (MIT)
 * Copyright © 2022 Walkline Wang (https://walkline.wang)
 * Gitee: https://gitee.com/walkline/ramcu-mechanical-keypad
 */
#ifndef APP_COMMON_H_
#define APP_COMMON_H_

#include <stdio.h>
#include <string.h>
#include <stdlib.h>
#include <stdbool.h>
#include "hal_data.h"

#define DEBUG	1

#define	GET_BIT(x, bit)	((x & (1 << bit)) >> bit)

/* 封装常用函数命令 */
#define sleep_ms(value)		R_BSP_SoftwareDelay(value, BSP_DELAY_UNITS_MILLISECONDS)
#define set_io_high(io)		(void) R_IOPORT_PinWrite(&g_ioport_ctrl, io, BSP_IO_LEVEL_HIGH)
#define set_io_low(io)		(void) R_IOPORT_PinWrite(&g_ioport_ctrl, io, BSP_IO_LEVEL_LOW)
#define read_io(io, value)	(void) R_IOPORT_PinRead(&g_ioport_ctrl, io, &value)

/* 重定义 IO 引脚 */
#define io_num_lock		BSP_IO_PORT_04_PIN_08

#define io_key_row_1	BSP_IO_PORT_01_PIN_04
#define io_key_row_2	BSP_IO_PORT_01_PIN_03
#define io_key_row_3	BSP_IO_PORT_01_PIN_02
#define io_key_row_4	BSP_IO_PORT_01_PIN_01
#define io_key_row_5	BSP_IO_PORT_01_PIN_00

#define io_key_col_1	BSP_IO_PORT_01_PIN_11
#define io_key_col_2	BSP_IO_PORT_00_PIN_14
#define io_key_col_3	BSP_IO_PORT_00_PIN_15
#define io_key_col_4	BSP_IO_PORT_05_PIN_00

#define io_usb_hid_tx	BSP_IO_PORT_03_PIN_02
#define io_usb_hid_rx	BSP_IO_PORT_03_PIN_01

#define io_console_tx	BSP_IO_PORT_01_PIN_09
#define io_console_rx	BSP_IO_PORT_01_PIN_10

#endif
